Googleカレンダーの予定を一括で移行する方法
SBJソリューション部のserinaです。
全ての予定やタスクをGoogleカレンダーで管理しています。
最近、毎日オンライン英会話を受けている上にパーソナルジムの予定も追加したらカレンダーがかなり見辛くなってしまいました、、、。
なので、新しいカレンダーを作成して整理することにしました。
やりたいこと
1つのカレンダーで管理するのではなく、カテゴリごとにカレンダーを作成して予定を分けたい。
その際に既存の予定を新規のカレンダーに移行したい。
移行するメリット
- カテゴリ別に見たいスケジュールのみ確認できる
- 一部の予定を誰かと共有しやすい
移行するデメリット
- カレンダーの作成時に毎回どのカレンダーにするのか選択する必要がある
現在のGoogleカレンダー
My calendarsはこんな感じです。
ここに新規のカレンダーを追加して移行していきます!
- My calendars
- Main ... メインの予定管理
- Sub ... 定期的な予定管理(クレカ引き落とし日など)
- Task ... タスク管理
やり方
GASを作成して、移行します。
移行先のカレンダーがまだない場合は先に作成してください。
スクリプトはこちらです。
function moveFilteredEventsBetweenCalendars() {
// カレンダーID
const sourceCalendarId = 'your-emailadress@gmail.com'; // コピー元
const destinationCalendarId = '3fb648aXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@group.calendar.google.com'; // コピー先
// コピー元とコピー先のカレンダーを取得
const sourceCalendar = CalendarApp.getCalendarById(sourceCalendarId);
const destinationCalendar = CalendarApp.getCalendarById(destinationCalendarId);
// 移動対象の期間 (例: 過去 1 年間の予定)
const now = new Date();
const pastDate = new Date();
pastDate.setDate(now.getDate() - 365);
// コピー元カレンダーのイベントを取得
const events = sourceCalendar.getEvents(pastDate, now);
// タイトルに "カランメソッド" または "レアジョブ" が含まれるイベントのみをコピー
events.forEach(event => {
const title = event.getTitle();
if (title.includes("カランメソッド") || title.includes("レアジョブ")) {
// コピー先カレンダーにイベントを作成
destinationCalendar.createEvent(
title,
event.getStartTime(),
event.getEndTime(),
{location: event.getLocation(), description: event.getDescription()}
);
// 元のイベントを削除 ※削除したくない場合はコメントアウトか削除
event.deleteEvent();
}
});
}
変更が必要な値
カレンダーID
const sourceCalendarId = 'your-emailadress@gmail.com'; // コピー元
const destinationCalendarId = '3fb648aXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@group.calendar.google.com'; // コピー先
移行したい予定があるカレンダーのIDと、移行先のカレンダーIDを記載します。
カレンダーIDはカレンダーの設定画面に記載されています。
対象期間
// 移動対象の期間 (例: 過去 1 年間の予定)
const now = new Date();
const pastDate = new Date();
pastDate.setDate(now.getDate() - 365);
ここでは過去1年間としてます。
もっと先にしたい場合や短くしたい場合は365
の値を適宜変更してください。
予定の検索条件
if (title.includes("カランメソッド") || title.includes("レアジョブ")) {
私の場合は、オンライン英会話の予定のみ移行したかったため、カランメソッド
とレアジョブ
がタイトルに含むかどうかという条件を追加しています。
ここは適宜変更してください。
移行後のGoogleカレンダー
My calendarsはこんな感じです。
今回でGym
, Online Lesson
を追加しています。
- My calendars
- Main ... メインの予定管理
- Gym ... パーソナルジムの予定管理
- Online Lesson ... オンライン英会話の予定管理
- Sub ... 定期的な予定管理(クレカ引き落とし日など)
- Task ... タスク管理
最終的に私のカレンダーは、こうなっています!
1ヶ月表示で全部のカレンダー表示してしまうとカオスなんですが、、、。
1日か4日表示で確認することが多いため1ヶ月表示のごちゃごちゃさは個人的には気にならないです。
1ヶ月表示で確認する場合は、オンライン英会話やジムなど特定のカレンダーのみで表示して、1ヶ月の予定を俯瞰して確認することが多いです。
最後に
かなり見やすくすることができました!!
GASは簡単に使えるので手軽で良いなと感じました。
しばらくはこの運用方法でGoogleカレンダーを活用していきます。
また、不便に感じたらブログを書きたいと思います。
気に入っている予定管理方法なので、誰かの参考になったら嬉しいです!